package net.rrkk.photoshow.service;

import net.rrkk.photoshow.entity.PhotoCategory;

import java.util.List;
import java.util.Optional;

public interface PhotoCategoryService {
    
    // 创建分类
    PhotoCategory createCategory(PhotoCategory category);
    
    // 根据ID获取分类
    Optional<PhotoCategory> getCategoryById(Long id);
    
    // 获取所有分类
    List<PhotoCategory> getAllCategories();
    
    // 获取顶级分类
    List<PhotoCategory> getTopLevelCategories();
    
    // 获取启用的分类
    List<PhotoCategory> getActiveCategories();
    
    // 获取启用的顶级分类
    List<PhotoCategory> getActiveTopLevelCategories();
    
    // 根据父ID获取子分类
    List<PhotoCategory> getSubCategories(Long parentId);
    
    // 根据父ID获取启用的子分类
    List<PhotoCategory> getActiveSubCategories(Long parentId);
    
    // 根据名称搜索分类
    List<PhotoCategory> searchCategoriesByName(String name);
    
    // 更新分类
    PhotoCategory updateCategory(Long id, PhotoCategory category);
    
    // 删除分类
    void deleteCategory(Long id);
    
    // 获取分类树结构
    List<Object[]> getCategoryTree();
}